package com.lovi.generics;

/**
 * 自己构建泛型类（泛型方法，泛型参数，泛型属性，返回值）
 */
public class Test02 {
    public static void main(String[] args) {
        A<String> stringA = new A<String>("你好泛型");
        System.out.println(stringA.getT());//你好泛型
        //可以传递定义泛型参数的本身和它的子类
        A<B> bA = new A<B>(new B());
        System.out.println(bA.getT());//B{}
        bA.setT(new C());
        System.out.println(bA.getT());//C{}
        A<B> cA = new A<B>(new C());
        System.out.println(cA.getT());//C{}
    }
}
class A<T>{
    T t;
    public A(T t){
        this.t = t;
    }


    public T getT() {
        return t;
    }

    public void setT(T t) {
        this.t = t;
    }
}
class B{
    @Override
    public String toString() {
        return "B{}";
    }
}
class C extends B{
    @Override
    public String toString() {
        return "C{}";
    }
}
